@强制输出
@输出名("Ai助手")
类 Ai助手 : 窗口

	@布局配置([[根布局=真,宽度=-1,高度=-1,背景颜色=-1,对齐方式=1,纵向布局=真]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度DP=180,高度DP=180,图片资源="../../../素材/Png/ai图标.png",@上外边距DP=150,@下外边距DP=20]])
	变量 图片框1 : 图片框
	@布局配置([[父布局=线性布局1,粗体=真,内容="",字体大小=17,字体颜色=-16777216,单行显示=真,宽度=-1,对齐方式=17]])
	变量 文本框1 : 文本框

	变量 时钟1:时钟
	变量 时钟2:时钟
	变量 时钟3:时钟
	变量 是否显示完整:逻辑型=假
	变量 显示启动文本索引:整数=-1
	变量 启动文本:文本集合={"你","好","，","欢","迎","使","用","蓝","莓","A","i","小","助","手"}
	事件 Ai助手:创建完毕()
		申请所有权限()
		订阅事件()
		本对象.屏幕方向 = 1
		本对象.显示标题栏 =假
		本对象.状态栏字体黑色 = 真
		本对象.状态栏颜色 = -1
		本对象.导航栏颜色 = -1
		时钟1.时钟周期 = 150
	结束 事件

	事件 时钟1:周期事件()
		如果 是否显示完整==假 则
			时钟1.时钟周期 = 0
			如果 显示启动文本索引 == 启动文本.长度-1 则
				是否显示完整=真
				时钟1.时钟周期 = 1000
			否则
				显示启动文本索引=显示启动文本索引+1
				文本框1.内容=文本框1.内容+启动文本[显示启动文本索引]
				时钟1.时钟周期 = 150
			结束 如果
		否则
			时钟1.时钟周期 = 0
			如果 显示启动文本索引 < 0 则
				时钟2.时钟周期 = 100
			否则
				显示启动文本索引=显示启动文本索引-1
				变量 显示文本:文本
				循环(显示索引, 0, 显示启动文本索引)
					显示文本=显示文本+启动文本[显示索引]
				结束 循环
				文本框1.内容=显示文本
				时钟1.时钟周期 = 100
			结束 如果

		结束 如果
	结束 事件
	事件 时钟2:周期事件()
		时钟2.时钟周期 = 0
		如果 图片框1.透明度 < 0.2 则
			切换窗口(Ai窗口)
		否则
			图片框1.透明度 = 图片框1.透明度 - 0.1
			时钟2.时钟周期=100
		结束 如果
	结束 事件

	@虚拟方法
	方法 返回键被按下()
		父对象.返回键被按下()
	结束 方法

结束 类

@强制输出
@输出名("Ai窗口")
类 Ai窗口 : 窗口

	@布局配置([[根布局=真,宽度=-1,高度=-1,背景颜色=-1]])
	变量 相对布局1 : 相对布局
	@布局配置([[父布局=相对布局1,宽度=-1,高度=-2,显示滚动条=假,完全显示=真]])
	变量 滚动布局1 : 滚动布局
	@布局配置([[父布局=滚动布局1,宽度=-1,高度=-1,对齐方式=1,纵向布局=真]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度DP=180,高度DP=180,图片资源="../../../素材/Png/Ai头像.png",@上外边距DP=50,@下外边距DP=30]])
	变量 图片框1 : 图片框
	@布局配置([[父布局=线性布局1,宽度=-1,高度=-1,纵向布局=真,左内边距DP=20,右内边距DP=20,@下外边距DP=20]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局1,宽度=-1,高度DP=180,背景颜色=-1]])
	变量 线性布局4 : 线性布局
	@布局配置([[父布局=相对布局1,宽度=-1,高度DP=88,对齐方式=17,纵向布局=真,@位于布局底部=真,左内边距DP=20,右内边距DP=20,背景颜色=-1]])
	变量 线性布局3 : 线性布局
	@布局配置([[父布局=线性布局3,宽度=-1,高度DP=50,圆角=170,卡片阴影=5,@上外边距DP=5,@下外边距DP=3,@左外边距DP=3,@右外边距DP=3]])
	变量 卡片布局1 : 卡片布局
	@布局配置([[父布局=卡片布局1,宽度=-1,高度=-1]])
	变量 相对布局2 : 相对布局
	@布局配置([[父布局=相对布局2,宽度=-1,高度=-1,@位于某组件左边=3,左内边距DP=20,阴影=0,背景颜色=16777215,单行显示=真,提示文本="请输入问题",单行输入=真,内容="",字体颜色=-16777216,右内边距DP=8]])
	变量 编辑框1 : 编辑框
	@布局配置([[父布局=相对布局2,宽度DP=25,高度DP=25,@位于布局中间=真,@位于布局右边=真,@右外边距DP=20,ID=1,图片资源="../../../素材/Png/发送.png",@左外边距DP=10]])
	变量 图片框2 : 图片框
	@布局配置([[父布局=相对布局2,宽度DP=25,高度DP=25,图片资源="../../../素材/Png/语音.png",@位于某组件左边=1,@位于布局中间=真,ID=3]])
	变量 图片框3 : 图片框
	@布局配置([[父布局=相对布局1]])
	变量 浏览框1 : 浏览框


	变量 Ai词库:JSON对象
	变量 当前回复内容:文本
	变量 当前发送内容:文本
	变量 朗读内容:TTS
	变量 发送动画:缩放动画扩增?
	变量 是否已回复:逻辑型=假
	变量 判断是否已回复:时钟
	变量 网络工具1:网络工具
	变量 当前显示回复索引:整数
	变量 等待时钟:时钟

	事件 Ai窗口:创建完毕()
		订阅事件()
		本对象.屏幕方向 = 1
		本对象.显示标题栏 =假
		本对象.状态栏字体黑色 = 真
		本对象.状态栏颜色 = -1
		本对象.导航栏颜色 = -1
		媒体操作.播放assets音频(本对象,"mp3/回复消息.mp3")
		Ai词库=读入资源文件(本对象,"json/内置词库.json")
		变量 机器回复:机器回复对话框
		置圆角背景(机器回复.文本框1,-657931,0,28,28,28)
		线性布局2.添加组件(机器回复.取根布局())
		当前回复内容=Ai词库.取文本("启动文本")
		变量 机器时钟:时钟
		当前显示回复索引=-1
		机器时钟.时钟周期 = 150
		事件 机器时钟:周期事件()
			如果 当前显示回复索引 != 当前回复内容.长度-1 则
				当前显示回复索引=当前显示回复索引+1
				机器回复.文本框1.内容=机器回复.文本框1.内容+当前回复内容.取字符(当前显示回复索引).到文本()
			否则
				机器时钟.时钟周期 = 0
				变量 推荐关键词布局:推荐关键词
				置圆角背景(推荐关键词布局.文本框1,-657931,28,28,28,28)
				置圆角背景(推荐关键词布局.文本框2,-657931,28,28,28,28)
				置圆角背景(推荐关键词布局.文本框3,-657931,28,28,28,28)
				置圆角背景(推荐关键词布局.文本框5,-657931,28,28,28,28)
				置圆角背景(推荐关键词布局.文本框6,-657931,28,28,28,28)
				置圆角背景(推荐关键词布局.文本框7,-657931,28,28,28,28)
				线性布局2.添加组件(推荐关键词布局.取根布局())
				事件 推荐关键词布局.文本框1:被单击()
					当前回复内容=""
					当前发送内容=""
					快捷输入("随机一言")
				结束 事件
				事件 推荐关键词布局.文本框2:被单击()
					当前回复内容=""
					当前发送内容=""
					快捷输入("毒鸡汤")
				结束 事件
				事件 推荐关键词布局.文本框3:被单击()
					当前回复内容=""
					当前发送内容=""
					快捷输入("经典语录")
				结束 事件
				事件 推荐关键词布局.文本框5:被单击()
					当前回复内容=""
					当前发送内容=""
					快捷输入("心灵鸡汤")
				结束 事件
				事件 推荐关键词布局.文本框6:被单击()
					当前回复内容=""
					当前发送内容=""
					快捷输入("社会语录")
				结束 事件
				事件 推荐关键词布局.文本框7:被单击()
					当前回复内容=""
					当前发送内容=""
					快捷输入("精简词句")
				结束 事件
			结束 如果
		结束 事件
		事件 机器回复.图片框2:被单击()
			机器回复.GIF动画框1.动画路径 = "png/v2.gif"
			机器回复.GIF动画框1.可视 = 真
			机器回复.图片框2.可视 = 假
			朗读内容.朗读文本(机器回复.文本框1.内容)
			变量 判断是否朗读完成:时钟
			判断是否朗读完成.时钟周期 = 2000
			事件 判断是否朗读完成:周期事件()
				如果 朗读内容.朗读状态==假 则
					机器回复.GIF动画框1.可视 = 假
					机器回复.图片框2.可视 = 真
					判断是否朗读完成.时钟周期 = 0
				结束 如果
			结束 事件

		结束 事件

		发送动画 = 缩放动画扩增.创建动画(0.1,1,0.1,1,0.5,0.5,缩放动画扩增.比例值_基于组件,缩放动画扩增.比例值_基于组件)
		发送动画.插值器 = 跳跃插值器.新建()
		发送动画.播放时间 = 300
		发送动画.保持最终状态 = 真

		code getWindow().setSoftInputMode(2);
	结束 事件
	变量 时钟1:时钟
	变量 是否退出:逻辑型=假
	@虚拟方法
	方法 返回键被按下()
		如果 是否退出==假 则
			是否退出=真
			弹出提示("在按一次退出")
			//5秒后重置
			时钟1.时钟周期 = 5000
		否则
			父对象.返回键被按下()
		结束 如果
	结束 方法
	事件 时钟1:周期事件()
		时钟1.时钟周期 = 0
		是否退出=假
	结束 事件
	事件 图片框3:被单击()
		编辑框1.隐藏输入法()
	结束 事件
	方法 快捷输入(快捷关键词:文本)
		是否已回复=假
		编辑框1.隐藏输入法()
		媒体操作.播放assets音频(本对象,"mp3/发送消息.mp3")
		变量 用户发送:用户发送对话框
		当前发送内容=快捷关键词
		用户发送.文本框1.内容=当前发送内容
		编辑框1.内容=""
		置圆角背景(用户发送.文本框1,-657931,28,0,28,28)
		用户发送.文本框1.播放动画(发送动画)
		线性布局2.添加组件(用户发送.取根布局())
		滚动布局1.滚动到底部()
		用户发送.GIF动画框1.动画路径 = "png/v2.gif"
		用户发送.GIF动画框1.可视 = 真
		事件 用户发送.文本框1:被长按()
			变量 菜单1 : DX菜单
			事件 菜单1:列表被点击(索引 : 整数,内容 : 文本) : 逻辑型
				假如 索引
					是 0
						置剪切板文本(本对象,用户发送.文本框1.内容)
					是 1
						朗读内容.朗读文本(用户发送.文本框1.内容)
					是 2
						线性布局2.移除组件(用户发送.取根布局())
				结束 假如
				返回 假
			结束 事件
			菜单1.菜单列表({"复制","朗读","删除","取消"})
			菜单1.显示()
		结束 事件
		判断是否已回复.时钟周期 = 1000
		事件 判断是否已回复:周期事件()
			如果 是否已回复==真 则
				判断是否已回复.时钟周期 = 0
				用户发送.GIF动画框1.可视 = 假
			结束 如果
		结束 事件
		等待时钟.时钟周期 = 1000
	结束 方法
	事件 图片框2:被单击()
		是否已回复=假
		当前回复内容=""
		当前发送内容=""
		编辑框1.隐藏输入法()
		媒体操作.播放assets音频(本对象,"mp3/发送消息.mp3")
		变量 用户发送:用户发送对话框
		当前发送内容=编辑框1.内容
		用户发送.文本框1.内容=当前发送内容
		编辑框1.内容=""
		置圆角背景(用户发送.文本框1,-657931,28,0,28,28)
		用户发送.文本框1.播放动画(发送动画)
		线性布局2.添加组件(用户发送.取根布局())
		滚动布局1.滚动到底部()
		
		用户发送.GIF动画框1.动画路径 = "png/v2.gif"
		用户发送.GIF动画框1.可视 = 真
		事件 用户发送.文本框1:被长按()
			变量 菜单1 : DX菜单
			事件 菜单1:列表被点击(索引 : 整数,内容 : 文本) : 逻辑型
				假如 索引
					是 0
						置剪切板文本(本对象,用户发送.文本框1.内容)
					是 1
						朗读内容.朗读文本(用户发送.文本框1.内容)
					是 2
						线性布局2.移除组件(用户发送.取根布局())
				结束 假如
				返回 假
			结束 事件
			菜单1.菜单列表({"复制","朗读","删除","取消"})
			菜单1.显示()
		结束 事件
		判断是否已回复.时钟周期 = 1000
		事件 判断是否已回复:周期事件()
			如果 是否已回复==真 则
				判断是否已回复.时钟周期 = 0
				用户发送.GIF动画框1.可视 = 假
			结束 如果
		结束 事件
		等待时钟.时钟周期 = 1000
	结束 事件

	事件 等待时钟:周期事件()
		等待时钟.时钟周期 = 0
		如果 Ai词库.是否存在(当前发送内容)==假 则
			假如 当前发送内容
				是 "随机一言"
					变量 内容来源:文本[]=读入资源文件(本对象,"txt/随机一言.txt").分割文本("\n")
					当前回复内容=内容来源[取随机数(0,取数组长度(内容来源))]
					开始回复()
				是 "毒鸡汤"
					变量 内容来源:文本[]=读入资源文件(本对象,"txt/毒鸡汤.txt").分割文本("\n")
					当前回复内容=内容来源[取随机数(0,取数组长度(内容来源))]
					开始回复()
				是 "经典语录"
					变量 内容来源:文本[]=读入资源文件(本对象,"txt/经典语录.txt").分割文本("\n")
					当前回复内容=内容来源[取随机数(0,取数组长度(内容来源))]
					开始回复()
				是 "心灵鸡汤"
					变量 内容来源:文本[]=读入资源文件(本对象,"txt/心灵鸡汤.txt").分割文本("\n")
					当前回复内容=内容来源[取随机数(0,取数组长度(内容来源))]
					开始回复()
				是 "社会语录"
					变量 内容来源:文本[]=读入资源文件(本对象,"txt/社会语录.txt").分割文本("\n")
					当前回复内容=内容来源[取随机数(0,取数组长度(内容来源))]
					开始回复()
				是 "精简词句"
					变量 内容来源:文本[]=读入资源文件(本对象,"txt/精简词句.txt").分割文本("\n")
					当前回复内容=内容来源[取随机数(0,取数组长度(内容来源))]
					开始回复()
				否则
					//这里对接GTP接口
					网络工具1.发送数据(全局配置.后台域名+"ai.php","admin="+全局配置.用户账号+"&pass="+全局配置.用户密码+"&msg="+当前发送内容)
					事件 网络工具1:发送数据结束(结果 : 文本,内容 : 字节[],cookie : 文本)
						当前回复内容=结果
						开始回复()
					结束 事件
			结束 假如

		否则
			当前回复内容=Ai词库.取文本(当前发送内容)
			开始回复()
		结束 如果
	结束 事件
	方法 开始回复()
		是否已回复=真
		等待时钟.时钟周期 = 0
		媒体操作.播放assets音频(本对象,"mp3/回复消息.mp3")
		变量 机器回复:机器回复对话框
		置圆角背景(机器回复.文本框1,-657931,0,28,28,28)
		线性布局2.添加组件(机器回复.取根布局())
		滚动布局1.滚动到底部()
		变量 机器时钟:时钟
		当前显示回复索引=-1
		事件 机器回复.文本框1:被长按()
			变量 菜单2 : DX菜单
			事件 菜单2:列表被点击(索引 : 整数,内容 : 文本) : 逻辑型
				假如 索引
					是 0
						置剪切板文本(本对象,机器回复.文本框1.内容)
					是 1
						朗读内容.朗读文本(机器回复.文本框1.内容)
					是 2
						线性布局2.移除组件(机器回复.取根布局())
				结束 假如
				返回 假
			结束 事件
			菜单2.菜单列表({"复制","朗读","删除","取消"})
			菜单2.显示()
		结束 事件
		机器时钟.时钟周期 = 150
		事件 机器时钟:周期事件()
			如果 当前显示回复索引 != 当前回复内容.长度-1 则
				当前显示回复索引=当前显示回复索引+1
				机器回复.文本框1.内容=机器回复.文本框1.内容+当前回复内容.取字符(当前显示回复索引).到文本()
				滚动布局1.滚动到底部()
			否则
				机器时钟.时钟周期 = 0
				滚动布局1.滚动到底部()
			结束 如果
		结束 事件
		事件 机器回复.图片框2:被单击()
			机器回复.GIF动画框1.动画路径 = "png/v2.gif"
			机器回复.GIF动画框1.可视 = 真
			机器回复.图片框2.可视 = 假
			朗读内容.朗读文本(机器回复.文本框1.内容)
			变量 判断是否朗读完成:时钟
			判断是否朗读完成.时钟周期 = 2000
			事件 判断是否朗读完成:周期事件()
				如果 朗读内容.朗读状态==假 则
					机器回复.GIF动画框1.可视 = 假
					机器回复.图片框2.可视 = 真
					判断是否朗读完成.时钟周期 = 0
				结束 如果
			结束 事件
		结束 事件
	结束 方法


结束 类

类 机器回复对话框:组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,纵向布局=真,宽度=-1,高度=-2,右内边距DP=50,@上外边距DP=10,@下外边距DP=10]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局2,对齐方式=16]])
	变量 线性布局3 : 线性布局
	@布局配置([[父布局=线性布局3,宽度DP=30,高度DP=30,图片资源="../../../素材/Png/ic_splash_icon.png",@下外边距DP=3,@右外边距DP=2]])
	变量 图片框1 : 图片框
	@布局配置([[父布局=线性布局3,宽度DP=17,高度DP=17,@上外边距DP=3]])
	变量 相对布局1 : 相对布局
	@布局配置([[父布局=相对布局1,宽度=-1,高度=-1,图片资源="../../../素材/Png/1se.png"]])
	变量 图片框2 : 图片框
	@布局配置([[父布局=相对布局1,可视=假,宽度=-1,高度=-1]])
	变量 GIF动画框1 : GIF动画框
	@布局配置([[父布局=线性布局2,宽度=-1,高度=-2]])
	变量 相对布局2 : 相对布局
	@布局配置([[父布局=相对布局2,内边距DP=10,内容="",宽度=-1,高度=-2,字体颜色=-16777216,粗体=假,字体大小=16,@下外边距DP=10]])
	变量 文本框1 : 文本框
	@布局配置([[父布局=相对布局2,宽度DP=20,高度DP=20,图片资源="../../../素材/Png/c-B.png",@位于布局底部=真,@位于布局右边=真,@右外边距DP=3,@下外边距DP=3,可视=假]])
	变量 图片框3 : 图片框

结束 类

类 用户发送对话框:组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,纵向布局=真,宽度=-1,高度=-2,右内边距DP=0,@上外边距DP=10,@下外边距DP=10,左内边距DP=50,对齐方式=8388613]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局2,对齐方式=8388693,@下外边距DP=3]])
	变量 线性布局3 : 线性布局
	@布局配置([[父布局=线性布局3,宽度DP=17,高度DP=17,@上外边距DP=3,Y轴旋转角=180.0]])
	变量 相对布局1 : 相对布局
	@布局配置([[父布局=相对布局1,可视=假,宽度=-1,高度=-1]])
	变量 GIF动画框1 : GIF动画框
	@布局配置([[父布局=线性布局3,宽度DP=30,高度DP=30,@右外边距DP=3,@下外边距DP=0,@左外边距DP=3]])
	变量 相对布局4 : 相对布局
	@布局配置([[父布局=相对布局4,图片资源="../../../素材/Png/avatar_placeholder.png",宽度=-1,高度=-1,@外边距DP=0]])
	变量 图片框1 : 图片框
	@布局配置([[父布局=线性布局2,宽度=-1,高度=-2]])
	变量 相对布局2 : 相对布局
	@布局配置([[父布局=相对布局2,内边距DP=10,内容="",宽度=-1,高度=-2,字体颜色=-16777216,粗体=假,字体大小=16,@下外边距DP=10]])
	变量 文本框1 : 文本框

结束 类
类 推荐关键词:组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,纵向布局=真,宽度=-1,高度=-2,右内边距DP=50,@上外边距DP=0,@下外边距DP=10,左内边距DP=0]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局2,宽度=-1,高度=-1,对齐方式=16,纵向布局=真]])
	变量 线性布局5 : 线性布局
	@布局配置([[父布局=线性布局5,对齐方式=1]])
	变量 线性布局3 : 线性布局
	@布局配置([[父布局=线性布局3,内容="随机一言",@右外边距DP=10,字体大小=13,字体颜色=-16777216,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框1 : 文本框
	@布局配置([[父布局=线性布局3,内容="毒鸡汤",@右外边距DP=10,字体大小=13,字体颜色=-16777216,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框2 : 文本框
	@布局配置([[父布局=线性布局3,内容="经典语录",@右外边距DP=10,字体大小=13,字体颜色=-16777216,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框3 : 文本框
	@布局配置([[父布局=线性布局3,内容="随",字体大小=13,字体颜色=16777215,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框4 : 文本框
	@布局配置([[父布局=线性布局5,@上外边距DP=8,对齐方式=1]])
	变量 线性布局4 : 线性布局
	@布局配置([[父布局=线性布局4,内容="心灵鸡汤",@右外边距DP=10,字体大小=13,字体颜色=-16777216,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框5 : 文本框
	@布局配置([[父布局=线性布局4,内容="社会语录",@右外边距DP=10,字体大小=13,字体颜色=-16777216,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框6 : 文本框
	@布局配置([[父布局=线性布局4,内容="精简词句",@右外边距DP=10,字体大小=13,字体颜色=-16777216,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框7 : 文本框
	@布局配置([[父布局=线性布局4,内容="随",字体大小=13,字体颜色=16777215,左内边距DP=8,右内边距DP=8,上内边距DP=2,下内边距DP=2]])
	变量 文本框8 : 文本框

结束 类